﻿using SpaceNeedle.SDK.Windows.Platform.Data;
using SpaceNeedle.x6473.WindowsPhone.Common;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace SpaceNeedle.x6473.WindowsPhone.Models
{
    [DataContract]
    public class Properties : PropertiesBase
    {
        public const string BingMapsKey = "AsH6nhDGxQ_T46DUCqpLHT5bZKSMARwNlWuul3Lpk6krI735pl7qRzZcPA8_0y35";
        public const string AppId = "a73ca451-63dd-4470-be6d-31b5094185df";
        public const int ExecutionsMinimunRating = 5;

        [DataMember]
        public int ExecutionsCount
        {
            get { return this.Get<int>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public bool IsRatingActivated
        {
            get { return this.Get<bool>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public bool IsRatingDeclined
        {
            get { return this.Get<bool>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public ObservableCollection<Request> Requests
        {
            get { return this.Get<ObservableCollection<Request>>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public bool CanLoadOnlineAppContent
        {
            get { return this.Get<bool>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public string SocialNetworkName
        {
            get { return this.Get<string>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public Uri PushNotificationChannelUri
        {
            get { return this.Get<Uri>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public DateTime AlertsBeginDate
        {
            get { return this.Get<DateTime>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public DateTime StateSavedDate
        {
            get { return this.Get<DateTime>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public AppSettings Settings
        {
            get { return this.Get<AppSettings>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public Me Me
        {
            get { return this.Get<Me>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public string DeviceId
        {
            get { return this.Get<string>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public Post SelectedPost
        {
            get { return this.Get<Post>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public string SelectedRequestItemId
        {
            get { return this.Get<string>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public string SelectedAlertId
        {
            get { return this.Get<string>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public Request SelectedRequest
        {
            get { return this.Get<Request>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public RequestItem SelectedRequestItem
        {
            get { return this.Get<RequestItem>(); }
            set { this.Set(value); }
        }

        [DataMember]
        public AppContent AppContent
        {
            get { return this.Get<AppContent>(); }
            set { this.Set(value); }
        }
    }
}
